package com.example.springboot.service;

import com.example.springboot.common.request.PageRequest;
import com.example.springboot.common.dto.LoginDTO;
import com.example.springboot.common.request.LoginRequest;
import com.example.springboot.common.request.PasswordRequest;
import com.example.springboot.common.request.SetNewPasswordRequest;
import com.example.springboot.entity.Admin;
import com.github.pagehelper.PageInfo;


public interface AdminService {


    /**
     * 分页模糊查询
     * @param pageRequest
     * @return
     */
    PageInfo<Admin> page(PageRequest pageRequest);

    /**
     * 添加管理员
     * @param admin
     * @throws Exception
     */
    void save(Admin admin) throws Exception;


    /**
     * 根据id获取需要修改管理员的信息
     * @param id
     * @return
     */
    Admin getById(Integer id);

    /**
     * 更新管理员信息
     * @param admin
     * @throws Exception
     */
    void update(Admin admin) throws Exception;

    /**
     * 根据id删除管理员
     * @param id
     */
    void deleteById(Integer id);

    /**
     * 管理员登录
     * @param loginRequest
     * @return
     * @throws Exception
     */
    LoginDTO login(LoginRequest loginRequest) throws Exception;

    /**
     * 修改密码
     * @param passwordRequest
     */
    void changePassword(PasswordRequest passwordRequest);

    /**
     * 根据用户名重置新密码
     * @param request
     */
    void setPasswordByUsername(SetNewPasswordRequest request);

    /**
     * 修改管理员状态
     * @param admin
     */
    void updateStatus(Admin admin);
}
